package dao;

import domain.Article;
import domain.Favour;
import domain.User;

import java.util.List;

public interface UserDao {

    /**
     * 根据用户名查询用户信息
     * @param username
     * @return
     */
    public User findByUsername(String username);

    /**
     * 用户保存
     *
     * @param user
     * @param createTime
     */
    public void save(User user, String createTime);

    /**
     *根据uuid查询对象
     * @param code
     * @return
     */
    User findByCode(String code);

    /**
     * 修改用户状态码
     * @param user
     */
    void updateStatus(User user);

    /**
     * 登录时校验
     * @param username
     * @param password
     * @return
     */
    User findByUsernameAndPassword(String username, String password);

    /**
     * 查询文章数量
     * @param code
     * @return
     */
    int findArticleNum(String code);

    /**
     * 修改昵称
     * @param code
     * @param nickname
     * @return
     */
    int updateNickNameByCode(String code, String nickname);

    /**
     * 修改密码
     * @param code
     * @param newPassword
     * @return
     */
    int updatePasswordByCode(String code, String newPassword);

    /**
     * 发布文章
     *
     * @param cid
     * @param visible
     * @param title
     * @param text
     * @param createTime
     * @param code
     * @return
     */
    int setArticle(int cid, String visible, String title, String text, String createTime, String code);

    /**
     * 根据code查询文章
     *
     * @param code
     * @param createTime
     * @return
     */
    Article findArticleByCode(String code, String createTime);


    /**
     * 保存文章的标签
     * @param code
     * @param rid
     * @param tag
     * @return
     */
    int setLabelByCode(String code, int rid, int tag);

    int findTotalCount(String code);

    List<Article> findByPage(int start, int rows, String code);

    void deleteOneArticle(int rid);

    Article findArticleByRid(int rid);

    void updateArticle(int rid, String title, String text, String modifyTime, String visible);

    void deleteArticleFromRecycle(int rid);

    int findTotalCountFromRecycle(String code);

    List<Article> findByPageFromRecycle(int start, int rows, String code);

    Favour findLikeOrNot(String code, int rid);

    void addFavour(int rid);

    int conformLike(String code, int rid);


    void updateImageByCode(String code, String image);

    void recoverArticleByRid(int rid);

}
